home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byte0887.arc / WEST2.TXT < prev   
Encoding:
Text File  |  1980-01-01  |  6.7 KB  |  342 lines

  1.  
  2.  
  3. ====================
  4.  
  5.      INTERFAC.C
  6.  
  7. ====================
  8.  
  9.  
  10. /* Listing 6: Interface benchmark */
  11.  
  12. #define HYPERC
  13.  
  14. /* interface.c */
  15.  
  16.  
  17. /* Modified by Joel West, April 14, 1987 for all systems */
  18.  
  19. #include <stdio.h>
  20. #ifdef HYPERC
  21. #include <TBXTypes.h>
  22. #include <events.h>
  23. #else
  24. # ifdef MACC
  25. #  include <macdefs.h>
  26. #  include <events.h>
  27. # else
  28. #  ifdef AZTEC
  29. #   include <window.h>
  30. #   include <event.h>
  31. #  else
  32. #   ifdef LSC
  33. #    include <EventMgr.h>
  34. #   endif
  35. #  endif
  36. # endif
  37. #endif
  38.  
  39. #define COUNT 10000
  40.  
  41. main()
  42. {       int i, eMask1, eMask2, bool1, bool2;
  43.     EventRecord eRcrd1, eRcrd2;
  44.  
  45. #include "startup.c"
  46.  
  47.     eMask1 = eMask2 = -1;
  48.     for (i = 0; i < COUNT; ++i)
  49.         {       bool1 = GetNextEvent(eMask1, &eRcrd1);
  50.                 bool2 = GetNextEvent(eMask2, &eRcrd2);
  51.  
  52.                 bool1 = GetNextEvent(eMask1, &eRcrd1);
  53.                 bool2 = GetNextEvent(eMask2, &eRcrd2);
  54.  
  55.                 bool1 = GetNextEvent(eMask1, &eRcrd1);
  56.                 bool2 = GetNextEvent(eMask2, &eRcrd2);
  57.  
  58.                 bool1 = GetNextEvent(eMask1, &eRcrd1);
  59.                 bool2 = GetNextEvent(eMask2, &eRcrd2);
  60.     }
  61.  
  62. #include "done.c"
  63.  
  64. }
  65.  
  66.  
  67. ====================
  68.  
  69.      SAVAGE.C
  70.  
  71. ====================
  72.  
  73.  
  74. /* Listing 2: Savage benchmark */
  75.  
  76. /* savage.c */
  77.  
  78. #define LSC
  79.  
  80. /*
  81. ** savage.c -- floating point speed and accuracy test.  C version
  82. ** derived from BASIC version which appeared in Dr. Dobb's Journal,
  83. ** Sep. 1983, pp. 120-122.
  84.  
  85.  
  86. Modified by Joel West, April 14, 1987
  87.  
  88. For accuracy on the Macintosh, we want to use the SANE 80-bit
  89. extended type for all compilers.  This is:
  90.  
  91.         Lightspeed C    double
  92.         Mac C           extended
  93.         Hyper C         extended
  94.         Aztec C         n/a
  95. */
  96.  
  97. #define ILOOP   2500
  98. #include <stdio.h>
  99.  
  100. #ifdef MACC
  101. #define EXTENDED extended
  102. #include <sane.h>
  103. #else
  104. #ifdef HYPERC
  105. #define EXTENDED extended
  106. #include <TBXTypes.h>
  107. #include <events.h>
  108. #else
  109. #define EXTENDED double
  110. #endif
  111. #endif
  112.  
  113.  
  114. #ifdef HYPERC
  115. #define log(x) ln(x)    /* wrong name.  Others built-in */
  116. #else
  117. #include <math.h>
  118. #endif
  119.  
  120.  
  121. main()
  122. {       int i;
  123.         EXTENDED a;
  124.  
  125. #include "startup.c"
  126.  
  127.         a = 1.0;
  128.         for (i = 1; i <= (ILOOP - 1); i++)
  129.                 a = tan(atan(exp(log(sqrt(a*a))))) + 1.0;
  130.  
  131.         printf("a = %20.14e\n", a);
  132.  
  133. #include "done.c"
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141. }
  142.  
  143. ====================
  144.  
  145.      SIEVE.C
  146.  
  147. ====================
  148.  
  149.  
  150. /* Listing 1: Sieve benchmark */
  151.  
  152. /* sieve.c */
  153.  
  154. #define LSC
  155.  
  156. /*      Eratosthenes Sieve Prime Number Program from BYTE January 1983
  157.  
  158.         Modified by Joel West, April 13, 1987, for 16-bit short
  159. */
  160.  
  161. #define REGISTER
  162. #include <stdio.h>
  163.  
  164. #ifdef HYPERC
  165. #include <TBXTypes.h>
  166. #include <events.h>
  167. #endif
  168.  
  169. #define TRUE     1
  170. #define FALSE    0
  171. #define size  8190
  172.  
  173. char flags [size + 1];
  174.  
  175. main()
  176. {       REGISTER short i, prime, k, count, iter;
  177.  
  178. #include "startup.c"
  179.  
  180.         for (iter = 1; iter <= 10; iter++)                      /* do program
  181. 10 times */
  182.         {       count = 0;                                               /*
  183. prime counter */
  184.                 for (i = 0; i <= size; i++)                     /* set all
  185. flags true */
  186.                         flags [i] = TRUE;
  187.  
  188.                 for (i = 0; i <= size; i++)
  189.                 {       if (flags [i])                                  /*
  190. found a prime */
  191.                         {       prime = i + i + 3;                      /*
  192. twice index + 3 */
  193.                                 for (k = i + prime; k <= size; k+= prime)
  194.                                         flags [k] = FALSE;              /*
  195. kill all multiple */
  196.                                 count++;                                 /*
  197. primes found */
  198.                         }
  199.                 }
  200.         }
  201.  
  202. #include "done.c"
  203. }
  204.  
  205.  
  206.  
  207. ====================
  208.  
  209.      SORT.C
  210.  
  211. ====================
  212.  
  213.  
  214. /* Listing 4: Sort benchmark */
  215.  
  216.  
  217. /* sort.c */
  218.  
  219.  
  220. #define LSC
  221.  
  222. /* sorting benchmark---calls randomly the number of times specified by
  223.    MAXNUM to create an array of long integers, then does a quicksort
  224.    on the array of longs. The program does this for the number of
  225.    times specified by COUNT.
  226.  
  227. Modified by Joel West, April 13, 1987, for 16-bit short
  228. */
  229.  
  230. #include <stdio.h>
  231.  
  232. #ifdef HYPERC
  233. #include <TBXTypes.h>
  234. #include <events.h>
  235. #endif
  236.  
  237. #define REGISTER
  238.  
  239. #define MAXNUM 1000
  240. #define COUNT 10
  241. #define MODULUS ((long) 0x20000)
  242.  
  243. #define C 13849L
  244. #define A 25173L
  245.  
  246. long seed = 7L;
  247. long random();
  248. long buffer [MAXNUM] = {0};
  249.  
  250.  
  251. main()
  252. {       REGISTER short i, j;
  253.         REGISTER long temp;
  254.  
  255. #include "startup.c"
  256.         printf ("Filling array and sorting %d times\n", COUNT);
  257.         for (i = 0; i < COUNT; ++i)
  258.         {       for (j = 0; j < MAXNUM; ++j)
  259.                         {       temp = random (MODULUS);
  260.                                 if (temp < 0L)
  261.                                         temp = (-temp);
  262.                                 buffer[j] = temp;
  263.                         }
  264.                         printf ("Buffer full, iteration %d\n", i);
  265.                         quick (0, MAXNUM - 1, buffer);
  266.                 }
  267.  
  268. #include "done.c"
  269. }
  270.  
  271.  
  272. quick (lo, hi, base)
  273. REGISTER short lo, hi;
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280. long base [];
  281. {       REGISTER int i, j;
  282.         REGISTER long pivot, temp;
  283.  
  284.         if (lo < hi)
  285.         {       for (i = lo, j = hi-1, pivot = base [hi]; i < j; )
  286.                 {       while (i < hi && base [i] <= pivot)
  287.                                 ++i;
  288.                         while (j > lo && base [j] >= pivot)
  289.                                 --j;
  290.                         if (i < j)
  291.                         {       temp = base [i];
  292.                                 base [i] = base [j];
  293.                                 base [j] = temp;
  294.                         }
  295.                 }
  296.                 temp = base [i];
  297.                 base [i] = base [hi];
  298.                 base [hi] = temp;
  299.                 quick (lo, i - 1, base);
  300.                 quick (i + 1, hi, base);
  301.         }
  302. }
  303.  
  304. long random (size)
  305. REGISTER long size;
  306. {
  307.         seed = seed * A + C;
  308.         return (seed % size);
  309. }
  310.  
  311.  
  312. ====================
  313.  
  314.      STARTUP.C
  315.  
  316. ====================
  317.  
  318.  
  319. /* Listing 9: Standard startup source */
  320.  
  321. /* startup.c */
  322.  
  323. #ifdef HYPERC
  324. /* Won't create window for us */
  325.         stdTerm(PStr("Hyper-C window"));
  326.     EXTERN CHAR getKey();
  327. #define getchar() getKey(TRUE)
  328. #endif
  329.  
  330. #ifdef MPU68000
  331. /* Aztec needs this */
  332. pascal long TickCount()  = 0xa975;
  333. #endif
  334.  
  335.  
  336. /* Start timing */
  337.         long time;
  338.         puts("Press any key to begin timed test: ");
  339.         getchar();
  340.         puts("\nStarting\n");
  341.         time = TickCount();
  342.